require 'digest/sha2'
class User < ActiveRecord::Base
  has_many :medias
  has_many :comments

  validates_presence_of  :email, :message => 'Vous devez entrer un eMail!'
  validates_presence_of  :pwd, :message => 'Vous devez entrer un mot de passe!'
  validates_presence_of  :nickname, :message => 'Vous devez entrer un pseudo!'
  validates_uniqueness_of :email, :case_sensitive =>:false, :message => "L'email est déjà enregistré!"
  validates_confirmation_of :pwd, :message => 'Les mots de passe ne sont pas identiques!'
  validates_presence_of :pwd_confirmation, :if => :pwd_changed?, :message => "Vous devez confirmer votre mot de passe!"
  EmailAddress = begin
    qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
    dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
    atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-' +
      '\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
    quoted_pair = '\\x5c[\\x00-\\x7f]'
    domain_literal = "\\x5b(?:#{dtext}|#{quoted_pair})*\\x5d"
    quoted_string = "\\x22(?:#{qtext}|#{quoted_pair})*\\x22"
    domain_ref = atom
    sub_domain = "(?:#{domain_ref}|#{domain_literal})"
    word = "(?:#{atom}|#{quoted_string})"
    domain = "#{sub_domain}(?:\\x2e#{sub_domain})*"
    local_part = "#{word}(?:\\x2e#{word})*"
    addr_spec = "#{local_part}\\x40#{domain}"
    pattern = /\A#{addr_spec}\z/
  end
  validates_format_of :email, :with => EmailAddress, :message => "L'email est dans un format incorrect!"

  def enable_account
    self.rights = CONFIRMED_USER
  end

  def ip=(param)
    hash_ip = Digest::SHA2.hexdigest('zwx'+param+'rev')
    write_attribute(:ip, hash_ip)
  end
end
